// page/component/new-pages/cart/cart.js
var app = getApp();
Page({
  data: {
    data_url: "",
    carts: [],               // 购物车列表
    hasList: false,          // 列表是否有数据
    totalPrice: 0,           // 总价，初始为0
    selectAllStatus: true,    // 全选状态，默认全选
    obj: {
      name: "hello"
    }
  },

  onShow: function () {
    this.getTotalPrice();
    this.setData({
      data_url: app.globalData.data_url
    })
    let that = this;
    that.setData({
      carts: wx.getStorageSync('carData')
    })
    that.setData({
      hasList: that.data.carts.length > 0
    })
    let c = 0;
    let carts = this.data.carts
    for (let i = 0; i < carts.length; i++) {
      if (carts[i].selected === false) {
        c++
      }
    }
    if (c == 0) {
      that.setData({
        selectAllStatus: true
      })
    } else {
      that.setData({
        selectAllStatus: false
      })
    }
    that.getTotalPrice();
  },
  /**
   * 当前商品选中事件
   */
  goBuy: function (e) {
    var that = this
    app.buyCar = this.data.carts.filter(function (item) {
      return item.selected
    })
    wx.setStorageSync('carData', this.data.carts.filter(function(item){
      return !item.selected
    }))
    wx.navigateTo({
      url: '/pages/orders/orders',
    })
    // return
    // console.log(app.buyCar)
    // return 
    // var k = 0
    // for (var i = 0; i < app.buyCar.length; i++) {
    //   if (app.buyCar[i].stock < 1 && app.buyCar[i].selected) {
    //     k++;
    //   }
    // }
    // if (k > 0) {
    //   wx.showToast({
    //     title: '库存不足',
    //     icon: 'none',
    //     success: function (res) {
    //       setTimeout(function () {
    //         wx.switchTab({
    //           url: '/pages/index/index',
    //         })
    //       }, 1000);
    //     }
    //   })
    // } else {
    //   wx.navigateTo({
    //     url: '/pages/orders/orders',
    //   })
    // }
  },
  selectList(e) {
    let that = this;
    let selectAllStatus = this.data.selectAllStatus;
    const index = e.currentTarget.dataset.index;
    let carts = this.data.carts;
    const selected = carts[index].selected;
    carts[index].selected = !selected;
    this.setData({
      carts: carts
    });
    this.getTotalPrice();
    let c = 0;
    for (let i = 0; i < carts.length; i++) {
      if (carts[i].selected === false) {
        c++
      }
    }
    if (c == 0) {
      that.setData({
        selectAllStatus: true
      })
    } else {
      that.setData({
        selectAllStatus: false
      })
    }
    wx.setStorageSync('carData', this.data.carts)
  },

  /**
   * 删除购物车当前商品
   */
  deleteList(e) {
    const index = e.currentTarget.dataset.index;
    let carts = this.data.carts;
    carts.splice(index, 1);
    this.setData({
      carts: carts
    });
    wx.setStorageSync('carData', carts)
    if (!carts.length) {
      this.setData({
        hasList: false
      });
    } else {
      this.getTotalPrice();
    }
  },

  /**
   * 购物车全选事件
   */
  selectAll(e) {
    let selectAllStatus = this.data.selectAllStatus;
    selectAllStatus = !selectAllStatus;
    let carts = this.data.carts;

    for (let i = 0; i < carts.length; i++) {
      carts[i].selected = selectAllStatus;
    }
    this.setData({
      selectAllStatus: selectAllStatus,
      carts: carts
    });
    this.getTotalPrice();
  },

  /**
   * 绑定加数量事件
   */
  addCount(e) {
    const index = e.currentTarget.dataset.index;
    let carts = this.data.carts;
    let num = carts[index].num;
    num = num + 1;
    carts[index].num = num;
    this.setData({
      carts: carts
    });
    this.getTotalPrice();
  },

  /**
   * 绑定减数量事件
   */
  minusCount(e) {
    const index = e.currentTarget.dataset.index;
    const obj = e.currentTarget.dataset.obj;
    let carts = this.data.carts;
    let num = carts[index].num;
    if (num <= 1) {
      return false;
    }
    num = num - 1;
    carts[index].num = num;
    this.setData({
      carts: carts
    });
    this.getTotalPrice();
  },

  /**
   * 计算总价
   */
  getTotalPrice() {
    let carts = this.data.carts;                  // 获取购物车列表
    let total = 0;
    for (let i = 0; i < carts.length; i++) {         // 循环列表得到每个数据
      if (carts[i].selected) {                     // 判断选中才会计算价格
        total += carts[i].num * carts[i].price;   // 所有价格加起来
      }
    }
    this.setData({                                // 最后赋值到data中渲染到页面
      carts: carts,
      totalPrice: total.toFixed(2)
    });
  }
})